package com.plate.modules.system.controller;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.plate.common.core.result.Result;
import com.plate.modules.system.domain.bo.SysDictItemQueryBO;
import com.plate.modules.system.domain.bo.SysDictItemSaveBO;
import com.plate.modules.system.domain.po.SysDict;
import com.plate.modules.system.domain.po.SysDictItem;
import com.plate.modules.system.service.ISysDictItemService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @ClassName SysDictItemController
 * @Description TODO
 * @Author jiaxd
 * @Date 2023年11月05日 19:14
 * @Version 1.0
 */

@RestController
@RequestMapping("sys/sysDictItem")
public class SysDictItemController {

    @Autowired
    private ISysDictItemService sysDictItemService;

    @PostMapping("list")
    public Result list(@RequestBody SysDictItemQueryBO queryBO) {
        if (StrUtil.isBlankIfStr(queryBO.getDictCode())) {
            return Result.FAIL("dict_code不能为空");
        }
        LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(SysDictItem::getDictCode, queryBO.getDictCode());
        if (!StrUtil.isBlankIfStr(queryBO.getDictLabel())) {
            wrapper.like(SysDictItem::getDictLabel, queryBO.getDictLabel());
        }
        if (!StrUtil.isBlankIfStr(queryBO.getStatus())) {
            wrapper.eq(SysDictItem::getStatus, queryBO.getStatus());
        }
        Page<SysDictItem> page = new Page<>(queryBO.getPage(), queryBO.getSize());
        Page<SysDictItem> dictItemPage = sysDictItemService.page(page, wrapper);
        return Result.SUCCESS(dictItemPage);
    }

    @PostMapping("/listByDictCode")
    public Result listByDictCode(@RequestBody SysDictItemQueryBO queryBO) {
        LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(SysDictItem::getDictCode, queryBO.getDictCode());
        List<SysDictItem> list = sysDictItemService.list(wrapper);
        return Result.SUCCESS(list);
    }

    @PostMapping("/getDictItem")
    public Result getDictItem(@RequestBody SysDictItemQueryBO queryBO) {
        LambdaQueryWrapper<SysDictItem> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(SysDictItem::getDictCode, queryBO.getDictCode());
        wrapper.eq(SysDictItem::getDictValue, queryBO.getDictValue());
        SysDictItem sysDictItem = sysDictItemService.getOne(wrapper);
        return Result.SUCCESS(sysDictItem);
    }

    @PostMapping("update")
    public Result update(@RequestBody SysDictItemSaveBO saveBO) {
        if (StrUtil.isBlankIfStr(saveBO.getDictCode())) {
            return Result.FAIL("dict_code不能为空");
        }
        if (StrUtil.isBlankIfStr(saveBO.getId())) {
            SysDictItem sysDictItem = new SysDictItem();
            BeanUtils.copyProperties(saveBO, sysDictItem);
            int save = sysDictItemService.isSave(sysDictItem);
        } else {
            SysDictItem sysDictItem = sysDictItemService.getById(saveBO.getId());
            BeanUtils.copyProperties(saveBO, sysDictItem);
            sysDictItemService.isUpdate(sysDictItem);
        }
        return Result.SUCCESS();
    }

    @DeleteMapping("delete/{id}")
    public Result delete(@PathVariable Long id) {
        SysDictItem sysDictItem = sysDictItemService.getById(id);
        if (sysDictItem == null) {
            return Result.FAIL("");
        }
        boolean remove = sysDictItemService.removeById(id);
        return Result.SUCCESS(remove);
    }


}
